<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .box {
            width: 200px;
            height: 200px;
            border: 1px solid #000;
            margin-top: 20px;
            overflow-y: scroll;
        }
        
        .scroll {
            height: 2000px;
        }
    </style>
</head>

<body>
    <div>
        <div class="box" id="big">
            普通滚动
            <div class="scroll"></div>
        </div>
        <div class="box" id="small">
            函数防抖
            <div class="scroll"></div>
        </div>
        <div class="box" id="mini">
            函数节流
            <div class="scroll"></div>
        </div>
    </div>
    <script>
        // 函数防抖和函数节流都是防止我们在一定的时间内频繁的调用方法，频繁的去请求接口
        // 函数防抖是在一定的时间内只会执行一次 应用场景: 模糊搜索
        // 函数节流是每隔多长时间执行一次 应用场景: 页面滚动


        document.querySelector("#big").onscroll = function() {
            console.log("普通滚动");
        }

        let time
        document.querySelector("#small").onscroll = function() {
            clearTimeout(time)
            time = setTimeout(() => {
                console.log("函数防抖");
            }, 200);
        }

        let flag = true
        document.querySelector("#mini").onscroll = function() {
            if (flag) {
                flag = false
                time = setTimeout(() => {
                    flag = true
                    console.log("函数节流");
                }, 200);
            }
        }
    </script>
</body>

</html>